package com.feicheng.service;

import com.alibaba.fastjson.JSONObject;
import com.feicheng.common.result.ResultInfo;
import com.feicheng.persistence.entity.Access;
import com.feicheng.persistence.entity.AccessRecord;
import com.feicheng.persistence.entity.WxServer;
import com.feicheng.persistence.model.AccessRecordMain;

/**
 * <p>
 *  业务逻辑接口
 *  门店相关的服务
 * </p>
 *
 * @author cailongyang
 */
public interface IFStoreService {

    ResultInfo closeStore(Integer storeId);

    ResultInfo openStore(Integer storeId);

    ResultInfo getStoreWithAppId(String appId);

    /**
     * 分页查询门店信息
     * @autor 葛仁旭
     * @param param 门店名称 联系人 电话 地址 状态 当前页 每页条数
     * @return
     */
    ResultInfo getStoresByPage(JSONObject param);

    /**
     * 取得所有门店
     * @autor 葛仁旭
     * @param param
     * @return
     */
    ResultInfo getStores(JSONObject param);

    /**
     * 删除门店信息
     * @autor 葛仁旭
     * @param storeId
     * @return
     */
    ResultInfo deleteStore(Integer storeId);

    /**
     * 更新门店信息
     * @autor 葛仁旭
     * @param param
     * @return
     */
    ResultInfo updateStore(JSONObject param);

    /**
     * 取得门店信息
     * @autor 葛仁旭
     * @param storeId
     * @return 门店基本信息 门禁信息 公众号信息
     */
    ResultInfo getStoreInfo(Integer storeId);

    /**
     * 新增门店信息
     * @autor 葛仁旭
     * @param param
     * @return
     */
    ResultInfo newStore(JSONObject param);

    /**
     * 新增门店公众号信息
     * @autor 姜浩男
     * @param wxServer
     * @param storeId
     * @return
     */
    ResultInfo newWxServer(WxServer wxServer, Integer storeId);

    ResultInfo getWxServer(Integer wId);

    /**
     * 更新门店公众号信息
     * @autor 姜浩男
     * @param wxServer
     * @return
     */
    ResultInfo updateWxServer(WxServer wxServer);

    /**
     * 删除门店公众号信息
     * @autor 姜浩男
     * @param wId 主键：公众号编号
     * @return
     */
    ResultInfo deleteWxServer(Integer wId);

    /**
     * 分页查询门禁信息
     * @autor 邱明昶
     * @param param 门禁设备ID 序列号 授权key 出入 状态 门店编号 型号 当前页 每页条数
     * @return
     */
    ResultInfo getAccessesByPage(JSONObject param);

    /**
     * 取得门禁信息
     * @autor 邱明昶
     * @param accessId
     * @return
     */
    ResultInfo getAccess(Integer accessId);

    /**
     * 修改门禁信息
     * @autor 邱明昶
     * @param access 门禁基本信息
     * @param storeId 门店编号
     * @param ioFlg 出入
     * @return
     */
    ResultInfo updateAccess(Access access, Integer storeId, Boolean ioFlg);

    /**
     * 删除门禁信息
     * @autor 邱明昶
     * @param accessId 主键门禁编号
     * @return
     */
    ResultInfo deleteAccess(Integer accessId);

    /**
     * 新增门禁信息
     * @autor 邱明昶
     * @param access
     * @param storeId
     * @param ioFlg 出入
     * @return
     */
    ResultInfo newAccess(Access access, Integer storeId, Boolean ioFlg);

    /**
     * 分页查询扫码记录
     * @autor 范延平
     * @return
     */
    ResultInfo getAccessRecordByPage(AccessRecordMain accessRecordMain,
                                     Integer current,
                                     Integer size);

    ResultInfo newAccessRecord(AccessRecord accessRecord);



}
